/**
 * 监听 某个属性的访问   getter setter
 */

class Animal{
  int? age;

  Animal(this.age);

  void eating(){
    print("eating");
  }
}


class Person extends Animal{
  String? name;

  // 将age 初始化赋值给 父类
  Person(this.name,int age):super(age);

  @override
  void eating() {
    // TODO: implement eating
    print("$name eating");
  }
}

/**
 * 抽象类    ： 不能被实例化
 * 抽象类中可以定义抽象方法
 *
 *
 * 抽象类： 多态的实现
 * 什么是抽象方法
 */
abstract class Student{

  // 只能在抽象类中定义抽象方法
   void play();
   int getGrade();
}

class PrimaryStudent extends Student{

  @override
  void play() {
    // TODO: implement play
  }

  @override
  int getGrade() {
    // TODO: implement getGrade
    return 6;
  }
}


class JuniorStudent extends Student{
  @override
  void play() {
    // TODO: implement play
  }

  @override
  int getGrade() {
    // TODO: implement getGrade
    return 3;
  }
}

/**
 * 隐式接口 : dart中有接口的概念，，在dart中所有的类都是接口
 */
class Runner{
  void running(){
    print("running");
  }
}

// 将一个类当成接口来实现
class Bird implements Runner{

  @override
  void running() {
    // TODO: implement running
    print("bird running");
  }
}

/**
 * Mixin混入: dart不支持多继承
 */


void test(){

}

void foo(){}



main(){
  final p = new Person("hh",11);
  p.name = "cc";
  p.eating();





}




void calculate(Student student){
  print(student.getGrade());
}